home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 11 / PC World Interactive 11.iso / share / multimed / MAINACT / DATA1.CAB / Script_Files / accel.rex next >
OS/2 REXX Batch file  |  1998-05-04  |  5KB  |  96 lines

  1. /**************************************************************
  2.  *                                                            *
  3.  *                   MainActor Rexx Script                    *
  4.  *                                                            *
  5.  *  De/Accelerates a range of pictures from one timecode to   *
  6.  *  another timecode. The range of pictures and the two time- *
  7.  *  codes are requested from the users.                       *
  8.  *  If the end timecode is smaller than the start timecode    *
  9.  *  the script will perform acceleration, otherwise the       *
  10.  *  pictures will be deaccelerated.                           *
  11.  *  The timecodes will be spread in a linear fashion.         *
  12.  *                                                            *
  13.  *  Example: First picture=10, last picture=20                *
  14.  *  first timecode=1000ms(1 fps), last timecode=100ms(10 fps) *
  15.  *                                                            *
  16.  *       Timecode of picture 10 = 1000 ms                     *  
  17.  *       Timecode of picture 11 =  910 ms                     *  
  18.  *       Timecode of picture 12 =  820 ms                     *  
  19.  *       Timecode of picture 13 =  730 ms                     *  
  20.  *       Timecode of picture 14 =  640 ms                     *  
  21.  *       Timecode of picture 15 =  550 ms                     *  
  22.  *       Timecode of picture 16 =  460 ms                     *  
  23.  *       Timecode of picture 17 =  370 ms                     *  
  24.  *       Timecode of picture 18 =  280 ms                     *  
  25.  *       Timecode of picture 19 =  190 ms                     *  
  26.  *       Timecode of picture 20 =  100 ms                     *  
  27.  *                                                            *
  28.  *  Last modified: 10/11/97, Written by: Markus Moenig        *
  29.  *                                                            *
  30.  **************************************************************/
  31.  
  32.   say "This script accelerates a range of pictures."
  33.  
  34.   IF GetGlobalInfo("LOADEDPROJECTS")= "0" THEN DO     /* Check if there are */
  35.    BEGIN                                              /* any projects loaded */
  36.     say "No picture list loaded! Exiting ..."         /* Failed, exiting ... */
  37.     exit
  38.    END
  39.  
  40.   IF GetProjectInfo("TYPE") <> "Picture List" THEN DO /* Only works for pictures */
  41.     say "This script needs a picture list! Exiting..."
  42.     exit
  43.    END
  44.  
  45.   say "Please enter the first picture ('quit' to exit):"
  46.   pull from
  47.   IF from="QUIT" THEN exit
  48.  
  49.   say "Please enter the last picture ('quit' to exit):"
  50.   pull to
  51.   IF to="QUIT" THEN exit
  52.  
  53.   say "Please enter the start timecode in ms ('quit' to exit):"
  54.   pull starttime
  55.   IF starttime="QUIT" THEN exit
  56.  
  57.   say "Please enter end timecode in ms ('quit' to exit):"
  58.   pull endtime
  59.   IF endtime="QUIT" THEN exit
  60.  
  61.                                                      /* Check if input is valid */
  62.   IF (to < from) | (to > GetProjectInfo("FRAMES")) THEN DO
  63.    BEGIN
  64.      say "Invalid input. Exiting ..."
  65.      exit
  66.    END
  67.                                                      /* de- or acceleration ? */
  68.   IF starttime > endtime THEN acceleration=1
  69.     ELSE acceleration=0
  70.  
  71.   range=to-from                                      /* Calc the number of pictures in the range */
  72.   IF acceleration THEN DO
  73.    BEGIN
  74.     time=starttime-endtime                           /* De/Acceleration: Calc the difference between */
  75.     timetoadd=time/range                             /* the two timecodes and get the value which has */
  76.     time=starttime                                   /* to be either added to the start timecode for */
  77.    END                                               /* deacceleration or substracted for acceleration */
  78.   ELSE DO
  79.    BEGIN
  80.     time=endtime-starttime
  81.     timetoadd=time/range
  82.     time=starttime
  83.    END
  84.  
  85.   say "Settings timecodes ..."
  86.   DisableFrameContainer()                            /* Disable the Frame Container */
  87.   DO WHILE from <= to
  88.    BEGIN
  89.      tmp=time % 1                                    /* Make sure we set a numeric value */
  90.      SetLocalTimecode(from,tmp)                      /* Set new timecode */
  91.      from=from+1                                     /* Go to next picture */
  92.      IF acceleration THEN time=time-timetoadd        /* Acceleration: substract the calculated amount */
  93.        ELSE time=time+timetoadd                      /* Deacceleration: add the calculated amount */
  94.    END
  95.   EnableFrameContainer()                             /* Enable the Frame Container again */
  96.   say "Finished !"